ДЗ: Ханойские башни

Есть три колышка.  Есть диски разного диаметра. Изначально N дисков упорядоченно надеты на первый колышек таким образом, что диск с наибольшим диаметром находится внизу, а с самым малом наверху. Цель - переместить с первого колышка все диски на третий колышек, сохранив на нём ту же (изначальную) упорядоченность. Для этого используется второй колышек. При перекладывании дисков между колышками есть важное правило: нельзя класть диск большего диаметра на диск с меньшим диаметром.

Саму механику игры программировать не надо - достаточно запрограммировать саму формулу подсчёта количества шагов.

Надо написать функцию solve_hanoi_tower, которая принимает количество дисков и возвращает минимальное кол-во ходов за которое можно решить задачу.

Примеры вызовов и возвратов
solve_hanoi_tower(3) -> 7
solve_hanoi_tower(5) -> 31
solve_hanoi_tower(0) -> 0

Передаются только положительные целые >= 0.